//  CommonProtocols.h
//  SpaceViking

typedef enum {
    kDirectionLeft,
    kDirectionRight
} PhaserDirection;

// Samurai:  Idle, Dead, runCenter, runLeft, runRight
// Boss: Idle, Dead, Slash, Defend, TakingDamage
typedef enum {
    kStateRunCenter,
    kStateRunLeft,
    kStateRunRight,
    kStateIdle,
    kStateDead,
    kStateSlash,
    kStateSlashLeft,
    kStateSlashLeftTop,
    kStateSlashRight,
    kStateSlashRightTop,
    kStateSlashRepair,
    kStateSlashBegin,
    kStateSlashEnd,
    kStateDefend,
    kStateTakingDamage
} CharacterStates;

typedef enum {
    kObjectTypeNone,
    kPowerUpTypeHealth,
    kPowerUpTypeMallet,
    kEnemyTypeRadarDish,
    kEnemyTypeSpaceCargoShip,
    kEnemyTypeAlienRobot,
    kEnemyTypePhaser,
    kVikingType,
    kSkullType,
    kRockType,
    kMeteorType,
    kFrozenVikingType,
    kIceType,
    kLongBlockType,
    kCartType,
    kSpikesType,
    kDiggerType,
    kGroundType    
} GameObjectType;

typedef enum {
    LEFT, RIGHT, STRIGHT
} Turn;

@protocol GameplayLayerDelegate
-(void)createObjectOfType:(GameObjectType)objectType 
               withHealth:(int)initialHealth
               atLocation:(CGPoint)spawnLocation 
               withZValue:(int)ZValue;

-(void)createPhaserWithDirection:(PhaserDirection)phaserDirection 
                     andPosition:(CGPoint)spawnPosition;
@end
